package sistema.web.dao.impls;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import sistema.web.dao.IJuegoDAO;
import sistema.web.dtos.JuegoDTO;
import sistema.web.utils.MySQLConnection;

public class JuegoDAO implements IJuegoDAO {

	public boolean registrar(String nombre, double costo, String descripcion, String materiales, int idUsuario) {
		boolean flag = true;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = "INSERT INTO juego (Nombre, Contenido, Costo, materiales, idUsuarioCreacion, FechaCreacion, Estado) VALUES ('" + nombre + "', '" + descripcion + "', " + costo + ", " + materiales + ", " + idUsuario + ", curdate(), 1)";
			
			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();			
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		
		return flag;
	}

	public boolean actualizar(int codigo, String nombre, double costo, String descripcion, String materiales, int idUsuario) {
		boolean flag = true;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = "UPDATE juego SET Nombre = '" + nombre + "', Contenido = '" + descripcion + "', Costo = " + costo + ", materiales = '" + materiales + "', idUsuarioCreacion = " + idUsuario + ", FechaModificacion = curdate() WHERE idJuego = " + codigo;

			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		
		return flag;
	}
	
	public List<JuegoDTO> listar(String campo, Object valor) {
		List<JuegoDTO> listJuego = null;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = 
				"SELECT " + 
				"   * " +
				"FROM " + 
				"	juego " +
				"WHERE " +
				"	Estado = 1 " 
			;
			
			if(campo != null && valor != null) {
				if(!campo.equals("idJuego")) {
					query += 
						" AND " +
							campo + " like '%" + valor + "%'"
					;					
				} else {
					query += 
						" AND " +
							campo + " = " + valor
					;					
				}			
			}
			
			PreparedStatement pst = conn.prepareStatement(query);
			ResultSet rs = pst.executeQuery();
			listJuego = new ArrayList<JuegoDTO>();
			while(rs.next()) {
				JuegoDTO dtoJuego = new JuegoDTO();
				
				dtoJuego.setIdJuego(rs.getInt("idJuego"));
				dtoJuego.setNombre(rs.getString("Nombre"));
				dtoJuego.setContenido(rs.getString("Contenido"));
				dtoJuego.setCosto(rs.getDouble("Costo"));
				dtoJuego.setMateriales(rs.getString("materiales"));
				
				dtoJuego.setIdUsuarioCreacion(rs.getInt("idUsuarioCreacion"));
				dtoJuego.setFechaCreacion(rs.getDate("FechaCreacion"));
				dtoJuego.setIdUsuarioModificacion(rs.getInt("idUsuarioModificacion"));
				dtoJuego.setFechaModificacion(rs.getDate("FechaModificacion"));
				dtoJuego.setEstado(rs.getInt("Estado"));
				
				listJuego.add(dtoJuego);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return listJuego;
	}

	public boolean eliminar(String codigo) {
		boolean flag = true;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = 
				"UPDATE " + 
				"	juego " +
				"SET " +
				"   estado = '0' " +
				"WHERE " +
				"	idJuego = " + codigo
			;
			
			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		return flag;
	}
}